home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 3: The Continuation / 17-Bit_The_Continuation_Disc.iso / amigan / amigan 3 / unix / ckuker.bwr < prev    next >
Text File  |  1994-01-27  |  31KB  |  720 lines

  1. C-Kermit Version 4D(060):
  2. Status, Bugs, and Problems
  3. As of: 6 May 1986
  4.  
  5. Note: Version numbering system changed from decimal notation (like 4.2)
  6. to number-letter notation (like 4C) to avoid confusion with Berkeley Unix
  7. version numbers.
  8.  
  9. See ckuker.upd for list of bugs already fixed.
  10.  
  11. -- SUPPORT FOR DIFFERENT SYSTEMS: --
  12.  
  13. 4.2BSD: "make bsd" works.  Should work on VAX, SUN, Pyramid, & others.
  14.  
  15. 4.1BSD: "make bsd" should work for this too (did not in C-Kermit v4.2).
  16.  
  17. 4.3BSD: unknown, but "make bsd" should(!) work.
  18.  
  19. 2.9BSD: "make bsd29" works, at least on Pro-380.  Should be the same for 2.8.
  20.  
  21. Version 7: works ok on the systems tested so far using "make v7", but some
  22.  fiddling with the make file is necessary for proc table definitions; see
  23.  the makefile and also ckuv7.hlp for details.
  24.  
  25. PC/IX: should work ok with "make pcix".
  26.  
  27. ATT 3Bx systems: should work ok with "make att3bx".  One person reported that
  28. under Sys V R2, the macro 'unchar' declared in ckcker.h has a name conflict
  29. with the unsigned character typedef included from sys/types.h, preventing
  30. successful compilation, and changing the name to something like 'myunchar'
  31. fixes the problem (can do this in the makefile, as in -Dunchar=myunchar).
  32.  
  33. Zilog Zeus: works with "make sys3" but all occurences of setjmp/longjmp in
  34. the source have to be replaced by setret/longret.
  35.  
  36. HP Integral PC -- "make sys3", but either remove code that sets up lock files,
  37. or have the lock files put in a directory that is guaranteed to be there,
  38. like /tmp.  Some problems reported when running under csh.
  39.  
  40. Most other System V or System III based systems can build a working Kermit with
  41. "make sys3"
  42.  
  43. PDP-11's running a System III or V based Unix and which have no I & D space
  44. should use "make sys3nid".
  45.  
  46. DEC Pro-350 or -380 with Pro/Venix V2 (not V1) -- uses the regular "make sys3"
  47. or "make sys3nid", but the file ckcfio.c might have to be edited first to
  48. reduce the value of MAXWLD and/or SSPACE.  See below under HINTS for details.
  49.  
  50. Valid Scaldstar CAD system -- There's a "make valid" in the makefile, but
  51. reportedly one thing is still lacking: ckutio.c needs to #include<sys/file.h>.
  52.  
  53. For other Unix systems, see the makefile.
  54.  
  55. VAX/VMS: support added by Stew Rubenstein at Harvard and Martin Minow at DEC.
  56.   Has to be built with CKV*.COM, needs development to handle all the VMS/RMS
  57.   features and to improve performance.  Has its own build procedure.  See
  58.   CKV*.*.  VMS-specific bugs in CKVKER.BWR.
  59.  
  60. Macintosh: Support added at Columbia, has own makefile, etc.  See CKM*.*.
  61.  
  62. Commodore Amiga: Support added by Davide Cervone, U of Rochester.  See CKI*.*.
  63.  
  64.  
  65. -- HINTS --
  66.  
  67. - If the program dies with a message like "malloc fails in splitpath()"
  68.   whenever it tries to parse a filename (as in the "send" command), then
  69.   the amount of space allocated for filename expansion in the module
  70.   ckufio.c must be reduced.  This can be done by changing the #defines
  71.   for MAXWLD (the maximum number of filenames) and SSPACE (the size of
  72.   static string space) to make the numbers smaller.
  73.  
  74. - When modifying or writing KERMIT code, do NOT pass to a function
  75.   (e.g., "signal") the address of a static function.  Doing so may
  76.   break VENIX code mapping.  If you must pass the address of the
  77.   function, make it global and pick a "non-generic" name for it that
  78.   will hopefully be unique and yet informative.
  79.  
  80.  
  81. -- BUG LIST --
  82.  
  83. First, a disclaimer must be made.  C-Kermit attempts to support all post-V6
  84. Unix variations on all machines.  This is a tall order, and requires careful
  85. attention to certain details.  As changes are made (and C-Kermit is still in
  86. stage of fairly rapid development), there is always the chance that a change
  87. -- made to introduce a new feature or fix a bug -- will not work as intended
  88. on some systems, even though it was tested successfully on others.  The main
  89. area to watch out for is not system differences (which are handled fairly well
  90. in the system-dependent ck?[ft]io modules), but in compiler differences,
  91. especially int/char confusion.  Characters should be stored in variables of
  92. type char, not int, and char/int conversion should be avoided because of
  93. problems introduced by sign extension.  And i/o should not be used to read
  94. characters into int variables, because the way in which the system stores the
  95. character in an int varies from system to system (e.g.  68000s put them on the
  96. left, the VAX on the right).
  97.  
  98. If you have received a C-Kermit release that does not work correctly (except
  99. for the bugs & restrictions noted below), it is not because the release was
  100. not thoroughly test -- it was -- but because it was not tested on your system
  101. since the last time changes were made, because of a lack of such a system to
  102. test it on.  If this happens to you, please try to track down the problem and
  103. report as specifically as possible back to us.
  104.  
  105.  
  106. General problems:
  107.  
  108. - The program is too big, with too many features; source is too large to fit on
  109.   some disks.  Needs to be reorganized so that a minimal Kermit can be built
  110.   for any system, and then frills can be added on if desired -- interactive
  111.   command parser, help strings, dial command, script command, etc.
  112.  
  113. - There's not a full enough set of features available from command line
  114.   invocation.  Commands like "bye" are missing.  This is mainly to keep the
  115.   "kermit -h" help message small enough to fit on one screen.
  116.  
  117. - Conditionalizations are not done clearly.  In some cases it might be
  118.   better to have compile-time flags for features, rather than systems, or
  119.   generic system names, rather than specific vendor/machine names, to
  120.   avoid excessive nesting or repitition of compile-time variables.
  121.   Constructions like "#ifdef FOO | BAR" are avoided because many compilers
  122.   don't understand them; the alternative is to repeat code under different
  123.   conditionals (to accomplish an OR) or to include it within nested
  124.   conditionals (AND), sometimes applying De Morgan's law to achieve the
  125.   desired result... 
  126.  
  127. - Program's return code might be wrong in some cases (in 4.0, it was always
  128.   zero; in 4C some attempt is made to return correct codes for failure and
  129.   success).
  130.  
  131. - On some systems (e.g. TRS-80 Model 16 with Xenix V7, or HP-9000 HP-UX)
  132.   C-Kermit reportedly runs VERY SLOWLY.  The program could certainly do with
  133.   some tuning -- but not at the expense of modularity and transportability! --
  134.   but in the meantime, it can probably be sped up a lot by removing the
  135.   -DDEBUG from the makefile, eliminating hundreds of function calls, many of
  136.   them in critical code (one user reports a 1250% improvement doing this on 
  137.   the TRS-80 Model 16!).  Another speedup could come from allowing more
  138.   systems to take advantage of "myread()" -- the nonblocking version of
  139.   read(); see below.
  140.  
  141. - Even on systems that use myread(), performance is much worse when parity
  142.   is "on" because single character reads are still used so as to allow
  143.   detection of the end of packet.  This will be improved in a future release.
  144.  
  145. - Micros like the DEC Pro-350, when in "IBM mode" (set flow none, set
  146.   handshake xon), might not be able to keep up with incoming packets, even
  147.   at relatively low baud rates.  The Pro-350 OS relies heavily on
  148.   XON/XOFF to avoid losing characters at the port, but XON/XOFF must be
  149.   disabled for communicating with IBM mainframes.  The only solution is
  150.   to lower the packet size to 20 or 30 to reduce the probability that
  151.   data is lost in any particular packet, and maybe also reduce the baud rate.
  152.  
  153. - Need 'set' commands for retry-threshhold and server timeout.
  154.  
  155. - The program could be a little bit less cavalier in its treatment of files.
  156.   For instance, when receiving a file (with "warning" turned off) it will
  157.   overwrite any existing file of the same name.  That's ok, but what if the
  158.   user types ^F or ^B to interrupt the transfer?  This does not save the
  159.   existing file -- it's already been destroyed by the open() of the new copy,
  160.   which in turn is discarded as a result of the interruption.  Maybe Kermit
  161.   should always make a temporary, unique name for incoming files, and then
  162.   rename them to their real names only after the transfer is complete.  But
  163.   that's no good on systems (like the Macintosh) that don't have disk space
  164.   to burn.
  165.  
  166. - Local versus remote mode is not, and probably can not, be determined
  167.   automatically upon startup.  For instance, if you build Kermit with
  168.   "make sys3" on a 3B20 and a 3B2, the program has no way of knowing whether
  169.   it's running on a timesharing system (the 3B20, where it should be remote
  170.   by default) or a workstation (the 3B2, where it should be local by default).
  171.   If you find that Kermit comes up on your system in the wrong mode, you can
  172.   put the appropriate "set line" command in your .kermrc file -- "set line
  173.   /dev/tty" will always put you in remote mode.
  174.  
  175. - Local mode file transfer display could be improved.  On tty-style displays,
  176.   the "percent done" could be shown by doing something like
  177.   "0...1...2...3...4...5...6...7...8...9...".
  178.  
  179. - If the program crashes or is halted (killed) from outside while it has the
  180.   terminal in a not-normal mode during command parsing or file transfer, the
  181.   terminal mode is not restored, and lock files are not cleaned up.  There can
  182.   be no fix for this within C-Kermit itself.  Subsequent Kermit runs may still
  183.   fail because the device is already opened by "another process" (you have
  184.   to log out & log in again to clear this one up).
  185.  
  186. - The shell's interrupt, delete, and kill characters may interfere or
  187.   conflict with those used by the Kermit command parser.  In any case, there
  188.   is no way to change Kermit's editing characters to conform to user's taste.
  189.  
  190. - Status info should be updated only for real file transfers, not transactions
  191.   like "finish".
  192.  
  193. - "!" command requires a space after, contrary to the Unix user's normal
  194.   expectation.
  195.  
  196. - Many people have asked for a system-wide startup file similar to
  197.   the user's .kermrc file, perhaps with a conditional way to escape from
  198.   it if the user has her own .kermrc file.  This notion might be extended
  199.   to include the entire hierarchy system -- home -- current directory.
  200.  
  201. - A deeper problem with the initialization files is that the file is only
  202.   taken when the program enters interactive command dialog.  To be consistent,
  203.   it should also be taken when the program is run via command line arguments.
  204.  
  205. - Some users report that it would be more desirable to have an error during
  206.   execution of a take file return directly to command level, rather than
  207.   pop to the invoking take file, in case the error in question is of such
  208.   severity that it would cause all subsequent commands in the stack of TAKE
  209.   files to fail.  Best to have a SET command to control this behavior.
  210.  
  211. - Some users report that the program should make no internal distinction
  212.   between running in foreground or background, so that program exit codes
  213.   are consistent, making it easier to debug shell scripts that invoke Kermit.
  214.  
  215. - Since Kermit opens and closes the communication line with each command line
  216.   invocation, it is not convenient to use it in scripts in which it is
  217.   repeatedly invoked (e.g. a print spooler).
  218.  
  219. - Variable names are sometimes confusing, especially the send/receive parameter
  220.   pairs (spsiz/rpsize, mystch/stchr, npad/mypadn, rtimo/timint, etc).  This
  221.   is mostly history... they tend to agree with the names used in other Kermit
  222.   programs.  Still, they should probably be changed.  Ditto for some of the
  223.   procedure names.
  224.  
  225. - Some C compilers do not support variable names longer than 6, nor function
  226.   names longer than 5, and some are not case sensitive (the DEC-20 C compiler
  227.   has all these restrictions, and the V6 Unix C compiler has some of them).
  228.   To ensure the widest possible portability, all identifiers should comply
  229.   with these restrictions -- currently many do not.
  230.  
  231. - When the C-Kermit server is given a host command (or even some generic
  232.   commands like 'space'), it might have to think for a long time before
  233.   returning output.  In this case, it should set a timer while waiting for
  234.   input from the fork and whenever the timer goes off, it should send a null
  235.   data packet to prevent the other Kermit from timing out.
  236.  
  237. - When connecting back to C-Kermit after a transaction, or after finishing
  238.   the server, it may be necessary to type a ^Q to clear up an XOFF deadlock.
  239.   There's not much the Kermit program can do about this...
  240.  
  241. - When interrupting a send with ^F or ^B, an appropriate message does not
  242.   seem to make it into the transaction log.
  243.  
  244. - The transaction log should record file type (text or binary).
  245.  
  246. - The debug log may contain bare CR's, which can be disconcerting.  The
  247.   debug() function should remove them.
  248.  
  249. - On some systems, "unchar", which Kermit uses to perform the inverse
  250.   operation from "tochar", is a reserved word (e.g. in ctypes.h).  Get
  251.   around this by doing something like "-Dunchar=xnchar" in the makefile.
  252.  
  253. ckucmd.c:
  254.  
  255. - Some editing commands don't work exactly right, like ^W after "show param".
  256.  
  257. - Interactive Kermit commands that come in from a pipe (as in
  258.   "cat foo | kermit") are echoed.  Some people think they should not be.
  259.   The fix can be made (at some expense) in getwd() by adding a line to
  260.   the first if () {} block, "if (!isatty(0)) echof = 1;".
  261.  
  262. ckcfn*.c:
  263.  
  264. - Some people have reported that CRLF between packets rather than just
  265.   CR make rpack spuriously detect an invalid packet (not verified).
  266.  
  267. ckuus*.c:
  268.  
  269. - 'show parameters' gets some of the send and receive parameters mixed up?
  270.  
  271. ckufio.c:
  272.  
  273. - ckufio currently goes to a lot of trouble to traverse the directory in
  274.   order to expand "*" and "?" in wildcards.  Maybe it should just fork the
  275.   user's customary shell and have it do the expansion.  This would allow
  276.   fancier filespecs to be given, like "~/ck*.[cwh]".  But it would slow down
  277.   features like filename completion and menus in the interactive command
  278.   parser.  (Find out how Unix FTP does it...)
  279.  
  280. ckutio.c:
  281.  
  282. - Myread() should be expanded to include systems that can't do nonblocking
  283.   reads, but can find out how many characters are in the input buffer -- this
  284.   would eliminate calling read() in a loop for each character during packet
  285.   transmission (e.g. Pro/Venix V1 could use "ioctl(x,TIOCQCNT,&y)", V7 could
  286.   use its buffer-queue-peeking trick, etc).
  287.  
  288. - There should be a timed option for ttoc() for use during connect so you
  289.   can escape from XOFF'd or other stuck conditions.
  290.  
  291. - There's no good way to select baud rates higher than 9600.  Most Unix systems
  292.   don't supply symbols for them (unless you use EXTA, EXTB), and even when they
  293.   do, the program has no way of knowing whether a specific port serial
  294.   controller supports those rates.
  295.  
  296. - Use of RAW|TANDEM in 4.1 BSD gives only unidirectional, not bidirectional,
  297.   flow control -- xoff's from the terminal are treated as data rather than
  298.   control signals.  Symptom: possible loss of characters during CONNECT.
  299.  
  300. - On some systems, there is an undesired interaction between the various
  301.   open() modes, fnctl(), and ioctl() invocations when modem-control lines
  302.   are involved.  Some of this due to bugs in some Unix implementations or to
  303.   inconsistencies between them (e.g. as to the behavior of TIOCEXCL, etc).
  304.  
  305. ckudia.c:
  306.  
  307. - Some systems do not allow users to manipulate dialers directly.
  308. - Should support a "phone book" (this would actually go in ckuus*.c).
  309. - Pro/Venix V2 (and some other Sys V-based systems) are having DTR-dropping
  310.   problems when dialing.  With Pro/Venix V2, a workaround is to get the system
  311.   to ignore the modem control signals and treat the line as a direct line by
  312.   issuing a "setline -d xxx" command, where "xxx" is the device node (e.g.
  313.   com1), rather than "setline -m xxx".
  314. - Hayes modem dial string should be ATD, not ATDT, so that dialing will occur
  315.   in the mode that the modem is set up for (does everyone agree?).
  316.  
  317. ckuus*.c:
  318.  
  319. - When an alternate filename is given for an incoming file name, and the
  320.   alternate name is uppercase, the name is lowercased.  Alternate names
  321.   should be taken literally.
  322.  
  323. - The send command should have the same syntax as the get command to allow
  324.   multiple filenames to be given on a single line:
  325.  
  326.     send foo bar baz  <-- send all these files
  327.   or:
  328.     send
  329.      Local file(s) to send: foo bar baz
  330.          Name(s) to send it/them under: x y z
  331.  
  332.   The latter form could be risky, of course, when mixed with wildcards,
  333.   and in any case would require major rewriting of many parts of the program
  334.   (which probably will never be done).
  335.  
  336. - Baud rate selection currently requires user to type a number, which is
  337.   then verified against a system-dependent table.  Better to have a baud rate
  338.   keyword (cmkey) table defined in the system-dependent module, so user
  339.   can abbreviate (e.g. '9' for '9600').
  340.  
  341. - No way to put trailing comments on commands.
  342.  
  343. - ckuus2.c makes the C optimizer run out of space under PC/IX and some other
  344.   systems.
  345.  
  346. Protocol (ckcpro.w, ckcfn*.c):
  347.  
  348. - No way to interrupt a protocol transaction until after it starts
  349.   successfully.  For instance, no way to interrupt the timeouts and
  350.   retransmissions of the initial packet when the other side is not
  351.   responding, except for killing the whole program.  Cure: check for
  352.   keyboard "interrupts" during the send-init process, set c[xz]seen.
  353.   But doing this will make the state table a lot more complicated...
  354.   Maybe change ^C trap to get back to command mode rather than exit
  355.   the program.
  356.  
  357. - When parity is in use and the other Kermit cannot do 8th bit prefixing,
  358.   the user is not warned that binary files will not be transferred correctly.
  359.   This can be easily remedied by calling screen(SCR_WM,...) after the
  360.   send-init exchange has occurred, but this would make a dialog box pop
  361.   up during protocol on the Macintosh...
  362.  
  363. ckucon.c:
  364.  
  365. - Doesn't do any particular kind of terminal emulation.  It wasn't meant to.
  366.   Filters can be used for this.  Or a replacement module can be written
  367.   (as has been done for the Macintosh).
  368.  
  369. - When sending BREAK, should clear output buffer first (this is done in BSD,
  370.   should be added for other systems to ttsndb() in ckutio.c).
  371.  
  372. - Performance is poor on systems that can't check the input buffer or
  373.   do nonblocking read() calls.  See the horrendous code that was added for V7
  374.   to get around this (peeking into tty buffers in kernel memory).
  375.  
  376. - As structured, connect mode can't include commands to toggle logging on
  377.   and off or to change settings, because the fork that reads keyboard input
  378.   doesn't share variables with the fork that does port i/o.
  379.  
  380. - The program may become stuck if the two sides get into an XOFF deadlock.
  381.   There should probably be a timer around (or in) the ttoc() call.
  382.  
  383. - Reportedly, a control-S typed at the keyboard doesn't always seem to "take"
  384.   when doing terminal emulation under Pro/Venix V2 (DEC micros, terminals,
  385.   devices, systems are notorious for their insistence on doing XON/XOFF and
  386.   attendant problems.  Remember the VT180?)
  387.  
  388. ------------------------------
  389.  
  390. Undigested:
  391.  
  392. Date: Sun, 24 Nov 85 04:16:02 CST
  393. From: Stan Barber <neuro1!sob@rice.ARPA>
  394. Subject: more notes on C-kermit 4C(057)
  395. Organization: Neurophysiology, Baylor College of Medicine, Houston, Tx
  396.  
  397. One more suggestion:
  398.  
  399. I would provide some mechanism to allow SYSIII compatible sites to 
  400. configure what signal that might like to use to allow the child and
  401. parent to notify each other of problems. At my site, SIGUSR1 can not
  402. be used by kermit, so I modify ckucon.c by replacing SIGUSR1 with
  403. SIGUSR2. That fixes everything just fine.
  404.  
  405. At least a warning should be noted somewhere (in the .bwr file, I guess)
  406. so that people will know to change it.
  407.  
  408. Alternatively, I would suggest a unique name (SIGKERMIT) that the
  409. installer can define in the makefile (e.g. -DSIGKERMIT=SIGUSR2) to
  410. keep people from mucking in the source file.
  411.  
  412. ------------------------------
  413.  
  414. Date:  Tue Nov 26 11:45:41 EST 1985
  415. From: dolqci!irsdcp!scsnet!sunder@seismo.CSS.GOV
  416. Subject: Zilog Zeus Kermit, Os9 Kermit Warning
  417.  
  418. I am the contributer of the Zilog Zeus support for C-Kermit.
  419. Kermit WILL NOT WORK with the newest version of the Zeus operating system,
  420. i.e. 3.21.  We have gotten C-Kermit to run under this new release but we had
  421. to rewrite ckutio.c.  Do you want us to submit this new mod?
  422.  
  423. [Ed. - Sure, especially if the new ckutio.c also works with the old release
  424. of Zeus.  Or do we have to have two separate compile-time options for Zeus
  425. systems?]
  426.  
  427. ------------------------------
  428.  
  429. Date: Fri 28 Feb 86 11:15:39-EST 
  430. From: Chris Lent <OC.PEDHEM@CU20B.COLUMBIA.EDU>
  431. Subject: Kermit new versions, fixes, problems and comments
  432.  
  433. Just put C-kermit on a Pixel 1000 which is a 68000 based Berkley
  434. Unix box.  Make bsd almost works but it seems the getppid() function
  435. which is used to determine the parent process id of the shell running
  436. C-kermit is missing from the run-time library.  So I made a
  437. change to ckufio.c adding an #ifdef PIXEL and substituted a
  438. kill(0,9) for kill(getppid(),1).
  439. The unix diffs of the current version of ckufio.c and ckuker.mak follow:
  440. $ diff ckufio.c ckufiopix.c
  441. 198a199,201
  442. > #ifdef PIXEL
  443. >     return(kill(0,9));
  444. > #else
  445. 199a203
  446. > #endif
  447. $ diff ckuker.mak ckukerpix.mak
  448. 174a175,179
  449. > #Pixel 1000 (Almost) Berkeley Unix 4.1 or 4.2 (and presumably also 4.3)
  450. > #Pixel 1000 V2.1 (Has no getppid() function)
  451. > pixel:
  452. >     make wermit "CFLAGS= -DBSD4 -DDEBUG -DTLOG -DPIXEL"
  453.  
  454. ------------------------------
  455.  
  456. Date: Thu, 27 Mar 86 15:06:30 EST
  457. From: Paul Penfield <penfield@mit-caf>
  458. Subject: Unix Kermit bug
  459.  
  460. We have encountered a bug when Unix Kermit, version 4C(057), run on both a VAX
  461. 750 and a VAX 785, is used with the -k option.  There is a gratuitous CR-LF
  462. pair inserted after the last full 4096-character block of text, before the
  463. remainder of the text.  It always seems to be inside the last 4096 characters
  464. of the file.  This occurs when sending from an IBM PC using Kermit-MS version
  465. 2.27, to the unix system.  We can send using the -x option satisfactorily.  The
  466. bug occurs in a line like kermit -k | lpr using pipes, and when the standard
  467. output is directed toward a file, such as kermit -k >filename.
  468.  
  469. Incidently, the bug occurs in Unix 4.2BSD and also 4.3BSD.  Has this been
  470. reported before?  Is there a known fix?  Thanks for any advice.
  471. ...../Paul Penfield, Jr., Room 39-321, MIT, Cambridge, MA 02139; and
  472. penfield@caf.mit.edu or penfield@mit-mc.arpa
  473.  
  474. ------------------------------
  475.  
  476. Date:  9 Apr 1986 1105-EST (Wednesday)
  477. From: Vic Abell <abe@purdue-asc.arpa>
  478. Subject: Kermit and 4.xBSD rlogin
  479.  
  480. There is an undocumented option on the 4.xBSD rlogin call that must be used
  481. when C Kermit is at the end of a TCP/IP rlogin connection.  The option is "-8"
  482. and should be used in the following fashion:
  483.  
  484.     % rlogin hostname -8
  485.     % kermit
  486.  
  487. Vic Abell, Purdue University Computing Center
  488. abe@asc.purdue.edu, ...!pur-ee!pucc-j!abe
  489.  
  490. ------------------------------
  491.  
  492. Date: Mon, 28 Apr 86 16:01:12 cdt
  493. From: knutson@ngp.UTEXAS.EDU (Jim Knutson)
  494. Subject: C-Kermit 4C(58) problem
  495.  
  496. Someone seems to have changed a \r in the dial string for ventel modems
  497. to a 'r in ckudia.c.  It shouldn't have been changed.
  498.  
  499. Jim Knutson
  500.  
  501. (Ed. - Actually, it was always that way.  Anybody know for sure how it
  502. should really be?)
  503.  
  504. ------------------------------
  505.  
  506. To:       "Frank da Cruz" <FDCCU@CUVMB>
  507. From:     RAF@NIHCU
  508. Date:     Wed, 02 Apr 86  20:05:33 EST
  509. Subject:  EOL characters in C Kermit
  510.  
  511. This is Roger Fajman at the National Institutes of Health.  Please note that my
  512. BITNET address is now RAF@NIHCU.
  513.  
  514. We have tried some more tests of that problem that I mentioned to you some time
  515. ago about C Kermit not handling end of line characters properly.  We obtained
  516. the Ckermit source from KERMSRV a few weeks ago and built a version for XENIX
  517. on the PC/AT.  Our tests showed the same behavior as the Sliding Windows C
  518. Kermit.
  519.  
  520. When the EOL character is set to CR, C Kermit does not seem to recognize the
  521. packets that are sent to it by our TSO Kermit.  Our theory is that C Kermit
  522. does not look beyond the EOL character for more data.  When TSO receives a CR,
  523. it always echoes a CR-LF.  Thus packets received from C Kermit result in a
  524. response of CR-LF packet CR, when the EOL character is CR.
  525.  
  526. When the EOL character is set to EOT, file transfer works fine.  In this
  527. situation, TSO receives packet EOT and returns CR-LF packet EOT, and C Kermit
  528. is happy.
  529.  
  530. We also tried setting one side's EOL character to CR and the
  531. other to EOT.  Neither combination worked, and we are not sure
  532. why it didn't when TSO Kermit was using sending EOL=EOT and C
  533. Kermit was sending EOL=CR.  Perhaps it is related to the EOL bug
  534. in C Kermit that was mentioned in Info-Kermit #19.
  535.  
  536. ------------------------------
  537.  
  538. Date: 30 Apr 86 11:52:42 GMT
  539. From: Chuck Forsberg WA7KGX <caf%omen.uucp@brl.arpa>
  540. Subject: Re: Help with C-kermit on SCO Xenix V
  541. Keywords: It isn't working
  542.  
  543. In article <294@catnip.UUCP> ben@catnip.UUCP (Bennett Broder) writes:
  544. >I recent obtained a copy of C-kermit 4.2(030) PRERELEASE #2, 5 March 85.
  545. >We have been using this version at work on a Perkin Elmer 3250XP and an
  546. >AT&T 3B5, and so I wasn't expecting any problem bringing it up on Xenix.
  547. >Well the package compiles without error, and appears to work okay, until
  548. >you attempt to do a transfer.  Then it can't even seem to get past the
  549. >header packet, and keeps printing SS%S%S%S%S% and the like on the screen.
  550. >Looking at the debugging output from both ends show that the Xenix machine
  551. >is computing the checksum incorrectly.  Please, can anyone help???
  552. >
  553. The Microsoft C compiler has a few problems with right shifts such as used
  554. in the Kermit CRC calculations.  Here is something that should work better.
  555. (From Professional-YAM, the most powerful COMM program for the PC)
  556.  
  557. /*  C H K 1  --  Compute a type-1 Kermit 6-bit checksum.  */
  558.  
  559. chk1(pkt)
  560. char *pkt;
  561. {
  562.     register chk;
  563.  
  564.     chk = chk2(pkt);
  565.     return((((chk & 0300) >> 6) + chk) & 077);
  566. }
  567.  
  568.  
  569. /*  C H K 2  --  Compute the numeric sum of all the bytes in the packet.  */
  570.  
  571. chk2(pkt)
  572. register char *pkt;
  573. {
  574.     register chk;
  575.  
  576.     for (chk = 0; *pkt; ++pkt)
  577.         chk += (kparity ? (*pkt & 0177) : (*pkt & 0377));
  578.     return chk;
  579. }
  580.  
  581.  
  582. /*  C H K 3  --  Compute a type-3 Kermit block check.
  583.  *
  584.  * Calculate the 16-bit CRC of a null-terminated string using a byte-oriented
  585.  * tableless algorithm invented by Andy Lowry (Columbia University).  The
  586.  * magic number 010201 is derived from the CRC-CCITT polynomial x^16+x^12+x^5+1.
  587.  * Note - this function could be adapted for strings containing imbedded 0's
  588.  * by including a length argument.
  589. */
  590. chk3(s)
  591. char *s;
  592. {
  593.     register unsigned int c, q;
  594.     LONG crc = 0;
  595.  
  596.     while ((c = *s++) != '\0') 
  597.     {
  598.         if (kparity)
  599.             c &= 0177;
  600.         else
  601.             c &= 0377;
  602.         q = (crc ^ c) & 017;        /* Low-order nibble */
  603.         crc = (crc >> 4) ^ (q * 010201);
  604.         q = (crc ^ (c >> 4)) & 017;    /* High order nibble */
  605.         crc = (crc >> 4) ^ (q * 010201);
  606.     }
  607.     return(crc);
  608. }
  609.  
  610.    Chuck Forsberg WA7KGX  ...!tektronix!reed!omen!caf   CIS:70715,131
  611.    Author of Professional-YAM communications Tools for PCDOS and Unix
  612.  Omen Technology Inc     17505-V NW Sauvie Island Road Portland OR 97231
  613. Voice: 503-621-3406 TeleGodzilla: 621-3746 300/1200 L.sys entry for omen:
  614. omen Any ACU 1200 1-503-621-3746 se:--se: link ord: Giznoid in:--in: uucp
  615. omen!/usr/spool/uucppublic/FILES lists all uucp-able files, updated hourly
  616.  
  617. ------------------------------
  618.  
  619. Date: 3 May 86 00:19:29 GMT
  620. From: Brad Templeton <brad%looking.uucp@brl.arpa>
  621. Subject: Re: Help with C-kermit on SCO Xenix V
  622. Keywords: It isn't working
  623. To: info-micro@brl-vgr.arpa
  624.  
  625. In article <329@omen.UUCP> caf@omen.UUCP (Chuck Forsberg WA7KGX) writes:
  626. >In article <294@catnip.UUCP> ben@catnip.UUCP (Bennett Broder) writes:
  627. >>I recent obtained a copy of C-kermit 4.2(030) PRERELEASE #2, 5 March 85.
  628. >>We have been using this version at work on a Perkin Elmer 3250XP and an
  629. >>AT&T 3B5, and so I wasn't expecting any problem bringing it up on Xenix.
  630. >>Well the package compiles without error, and appears to work okay, until
  631. >>you attempt to do a transfer.  Then it can't even seem to get past the
  632. >>header packet, and keeps printing SS%S%S%S%S% and the like on the screen.
  633. >>Looking at the debugging output from both ends show that the Xenix machine
  634. >>is computing the checksum incorrectly.  Please, can anyone help???
  635. >>
  636. The problem is indeed a bug in the MSC compiler involving shifts of
  637. signed integers combined with ands.  The fix for kermit is simple enough,
  638. make the int in CHK1 into an "unsigned int"
  639.  
  640. We're lucky on this one.  It turns out that the Kermit start packet
  641. just happens to have a checksum that triggers this bug.  Even so it took
  642. me several hours to track it down.
  643.  
  644. I'm going to report it to Microsoft as soon as I see it's not in the new
  645. Beta release I just got.
  646.  
  647. Brad Templeton, Looking Glass Software Ltd. - Waterloo, Ontario 519/884-7473
  648.  
  649. ------------------------------
  650.  
  651.  7-May-86 10:48:47-EDT,2551;000000000001
  652. Mail-From: SY.CHRISTINE created at  7-May-86 10:48:42
  653. Date: Wed 7 May 86 10:48:42-EDT
  654. From: Christine M Gianone <SY.CHRISTINE@CU20B.COLUMBIA.EDU>
  655. Subject: [davidsen%kbsvax.tcpip@ge-crd.arpa: C Kermit on Xenix/286]
  656. To: sy.fdc@CU20B.COLUMBIA.EDU
  657. Message-ID: <12204799991.47.SY.CHRISTINE@CU20B.COLUMBIA.EDU>
  658.  
  659. Return-Path: <davidsen%kbsvax.tcpip@ge-crd.arpa>
  660. Received: from GE-CRD.ARPA by CU20B.COLUMBIA.EDU with TCP; Tue 6 May 86 17:54:46-EDT
  661. Date:  6 May 86 17:55 EST
  662. From: davidsen%kbsvax.tcpip@ge-crd.arpa
  663. Subject: C Kermit on Xenix/286
  664. To: info-kermit@cu20b.arpa
  665.  
  666. Received: by kbsvax.steinmetz (4.12/1.1x Steinmetz)
  667.     id AA02290; Tue, 6 May 86 15:46:42 edt
  668. Date: Tue, 6 May 86 15:46:42 edt
  669. From: Davidsen <davidsen%kbsvax@kbsvax.tcp-ip>
  670. Posted-Date: Tue, 6 May 86 15:46:42 edt
  671. Message-Id: <8605061946.AA02290@kbsvax.steinmetz>
  672. To: info-kermit@cu20b.arpa
  673. Subject: C Kermit on Xenix/286
  674.  
  675. Someone recently asked about problems using C Kermit with Xenix 286.
  676. Here are the problems. The first is timeout: for non-XENIX systems the
  677. timeout is in miliseconds per clock tick, and for XENIX in ticks per
  678. second. This causes a variety of timeout problems. It also causes
  679. greater problems trying to get Kermit to run on a Cray2, since the
  680. ticks are every 4.1ns (243902439 per sec). This *really* should be
  681. ticks per second with the actual elapsed time counted in ticks (or
  682. something).
  683.  
  684. The second fix is in the routine chk1, which needs the same type of fix
  685. used in chk2 to use an unsigned int for the working value, and store
  686. the value before returning it.
  687.  
  688. I compiled the whole package with the optimizer on and it fits in the
  689. small model. The version I first converted was (55), but I recently did
  690. C(58) and will be doing C(60) in a few days, to find problems before
  691. someone really needs the newer version. Thanks to Bill Lorensen
  692. (lorensen@ge-crd.arpa) for helping me find the crc bug.
  693.  
  694. This version works for 1 and 2 byte checks, but not for 3. Since I have
  695. yet to need 3 I haven't chased it too hard, but the obvious change
  696. didn't fix the problem. Somewhere in chk3 a problem still lurks.
  697.  
  698. The diffs for the changes follow:
  699.  
  700. ckcfn2.old:
  701. 157c157
  702. <     int chk;
  703. ---
  704. >     unsigned int chk;
  705. 159c159,161
  706. <     return((((chk & 0300) >> 6) + chk) & 077);
  707. ---
  708. >     chk = (((chk & 0300) >> 6) + chk) & 077;
  709. >     return (chk);
  710.  
  711. ckutio.old:
  712. 1290c1290
  713. < #define CLOCK_TICK 50            /* millisecs per clock tick */
  714. ---
  715. > #define CLOCK_TICK 20                   /* millisecs per clock tick */
  716.  
  717. -------